
/*
 * Archivo CVSiniestro.java 
 * 
 */

package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import modelo.Aseguradora;
import modelo.Siniestro;
import modelo.SiniestroDAO;

import vista.VSiniestro;

public class CVSiniestro implements ActionListener {

	private VSiniestro vSiniestro;
	private Aseguradora aseguradora;
	private Siniestro siniestro;
	private SiniestroDAO siniestroDao;
	//private Inspecc77ionDAO inspeccionDao;
	
	private static final String[] DIAS = {"01" , "02" , "03" , "04" , "05" , "06" , "07" , "08" , "09" ,"10" ,"11" ,"12" ,"13" ,"14" ,"15" ,"16" ,"17" ,"18" ,"19" ,"20" ,"21" ,"22" ,"23" ,"24" ,"25" ,"26" ,"27" ,"28" ,"29" ,"30" ,"31"};
	private static final String[] MESES = {"01" , "02" , "03" , "04" , "05" , "06" , "07" , "08" , "09" , "10" , "11" , "12"};
	private static final String[] ANNOS = {"2012" , "2013" , "2014" , "2015" , "2016" , "2017" , "2018" , "2019" , "2020" , "2021" , "2022" , "2023" , "2024" , "2025"};
	
	private boolean var =true;
	
	
	public CVSiniestro(Aseguradora aseguradora){
		
		vSiniestro = new VSiniestro();
		vSiniestro.setLocationRelativeTo(null);
		vSiniestro.setVisible(true);
	    vSiniestro.agregarListener(this);
		this.aseguradora = aseguradora;	
		
		vSiniestro.setDatosFecha(DIAS,MESES,ANNOS);
		siniestroDao = new SiniestroDAO();
		vSiniestro.bloquearDatos(false);
		
//		inspeccionDao = new InspeccionDAO();
	}
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		
		if(e.getActionCommand().equals("Buscar")){
		
			buscar();
			
		} else if(e.getActionCommand().equals("Guardar")) {
			
			guardar();
		
			
		} else if(e.getActionCommand().equals("Cancelar")) {
			
			cancelar();
			
			
		} else if(e.getActionCommand().equals("Modificar")) {
			
			
			modificar();
			
		} else if(e.getActionCommand().equals("Eliminar")){
			
			eliminar();
			
		} else if(e.getActionCommand().equals("G")){
			
			generar();
				
		} else if(e.getActionCommand().equals("G. Inspeccion")){
			
			CVInspeccion cVInspeccion = new CVInspeccion();
				
		} else if(e.getActionCommand().equals("Salir")){
			
			salir();
			
		}
		
	}


//	private void fechaInspeccion() {
//		
//		String fecha;
//		int aux1;
//		fecha = inspeccionDao.ultimaFechaInspeccion();
//		
//		if (fecha == "") {
//			
//			fecha = "29/07/2112";
//			
//		} else {
//			
//
//			aux1 = Integer.parseInt(fecha.substring(0, 2));
//			
//			
//			aux1--;
//			cmbDiaSiniestro.setSelectedIndex(aux1);
//			
//			
//			
//		}
//		
//	}


	private void generar() {
		
		String cod, inicio = "SEGSI";
		int aux;
		cod = siniestroDao.ultimoSiniestro();
		
		if (cod  == ""){
			
			cod = "SEGSI1000";
			vSiniestro.setTxtCodigo(cod);
			
			
		} else{
			
			aux = Integer.parseInt(cod.substring(5,9));
			aux++;
			
			inicio += aux;
				
			vSiniestro.setTxtCodigo(inicio);

		}
		
		vSiniestro.bloquearPoliza(true);
		vSiniestro.habilitarGenerar(false);	
		var = false;
	}


	private void buscar() {
	
		String codigo = "", poliza = "", desc, fecha, condicion,pol;
		
		
		codigo = vSiniestro.getTxtCodigo();
	
		    if ( codigo == "" && var == true){
			
						vSiniestro.mostrarMensaje("Debe Llenar el campo Correspondiente");
			
				} else if (codigo != "" && var == true) {
						
					 	vSiniestro.habilitarGenerar(false);
					 	
						siniestro = siniestroDao.consultarExitenciaSiniestro(codigo);
		
						if( siniestro != null ){
							//Siniestro exista
							
							vSiniestro.bloquearPoliza(true);
							
							vSiniestro.mostrarMensaje("El Siniestro Existe");
				
							desc = siniestro.getSin_descp();
							fecha = siniestro.getSin_fec();
							pol = siniestro.getSin_pol();
							condicion = siniestro.getSin_status();
							
							
							vSiniestro.setDatos(desc, fecha, condicion, pol);
							vSiniestro.bloquearPoliza(false);
							vSiniestro.bloquearDatos(true);
							vSiniestro.habiliarEliminarSiniestro(true);
							vSiniestro.habilitarGuardarSiniestro(false);
							vSiniestro.habilitarCodigo(false);
							vSiniestro.habilitarBuscarSiniestro(true);
							vSiniestro.habilitarModificar(true);
							
						} else {
								//Siniestro no Exista
							
							vSiniestro.bloquearPoliza(true);
							vSiniestro.bloquearDatos(false);
						}			
		
						//Genero codigo
					} else if(codigo != "" && var == false){
						
						poliza = vSiniestro.getTxtPoliza();
						vSiniestro.bloquearDatos(false);
						
						if ( poliza == "" ){
							
								vSiniestro.mostrarMensaje("Ingrese el codigo de la Poliza");
							
						} else {
							//Buscar la poliza y el codigo del siniestro en la BD para verificar q no exista
							Siniestro sini;
							
							sini = siniestroDao.ExitenciaSiniestroPoliza(codigo, poliza);
							
							if( sini == null){
								
								vSiniestro.bloquearDatos(true);
								
							} else {
								
								vSiniestro.mostrarMensaje("El siniestr ya fue registrado");
							}
							
							
						}
						
					}
		
	}


	private void guardar() {
	
		if ( vSiniestro.datosLlenos()){
			
			vSiniestro.mostrarMensaje("Debe Llenar todos los Campos");
			
		} else {
			
			String codigo, fecha, descp, condicion, poliza;
			siniestro = new Siniestro();
			
			codigo = vSiniestro.getTxtCodigo();
			fecha = vSiniestro.getFechaInspeccion();
			descp = vSiniestro.getTxtDescp();
			condicion = vSiniestro.getCondicion();
			poliza = vSiniestro.getTxtPoliza();
			
			siniestro.setSin_cod(codigo);
			siniestro.setSin_fec(fecha);
			siniestro.setSin_descp(descp);
			siniestro.setSin_status(condicion);
			siniestro.setSin_pol(poliza);
			
			siniestroDao.registrarSiniestro(siniestro);
			
			vSiniestro.mostrarMensaje("Siniestro Registrado Exitosamente");
		
			cancelar();
			
			vSiniestro.bloquearPoliza(true);		
			vSiniestro.bloquearDatos(true);
		}
		
	}


	private void cancelar() {

		vSiniestro.limpiarDatos();
		vSiniestro.bloquearDatos(false);
		var = true;
		vSiniestro.bloquearPoliza(false);
	 	vSiniestro.habilitarGenerar(true);

		vSiniestro.habiliarEliminarSiniestro(false);
		vSiniestro.habilitarGuardarSiniestro(true);
		vSiniestro.habilitarCodigo(true);
		vSiniestro.habilitarBuscarSiniestro(true);
		vSiniestro.habilitarModificar(false);
	}


	private void modificar() {
	
if ( vSiniestro.datosLlenos()){
			
			vSiniestro.mostrarMensaje("Debe Llenar todos los Campos");
			
			} else {
			
			String codigo, fecha, descp, condicion, poliza;
			siniestro = new Siniestro();
			
			codigo = vSiniestro.getTxtCodigo();
			fecha = vSiniestro.getFechaInspeccion();
			descp = vSiniestro.getTxtDescp();
			condicion = vSiniestro.getCondicion();
			poliza = vSiniestro.getTxtPoliza();
			
			siniestro.setSin_cod(codigo);
			siniestro.setSin_fec(fecha);
			siniestro.setSin_descp(descp);
			siniestro.setSin_status(condicion);
			siniestro.setSin_pol(poliza);
			
			siniestroDao.actualizarSiniestro(siniestro, codigo, poliza);
			
			vSiniestro.mostrarMensaje("Siniestro Actualizado Exitosamente");
		
			cancelar();
			
		}
				
	}


	private void eliminar() {
		if ( vSiniestro.datosLlenos()){
			
			vSiniestro.mostrarMensaje("Debe Llenar todos los Campos");
			
		} else {
			
			String codigo, fecha, descp, condicion, poliza;
			siniestro = new Siniestro();
			
			codigo = vSiniestro.getTxtCodigo();
			fecha = vSiniestro.getFechaInspeccion();
			descp = vSiniestro.getTxtDescp();
			condicion = vSiniestro.getCondicion();
			poliza = vSiniestro.getTxtPoliza();
			
			siniestro.setSin_cod(codigo);
			siniestro.setSin_fec(fecha);
			siniestro.setSin_descp(descp);
			siniestro.setSin_status(condicion);
			siniestro.setSin_pol(poliza);
			
			siniestroDao.eliminarSiniestro(siniestro, codigo, poliza);
			
			vSiniestro.mostrarMensaje("Siniestro Eliminado Exitosamente");
		
			cancelar();
			
		}		
		
	}


	private void salir() {
		
		vSiniestro.dispose();
		
	}

}
